package ar.edu.caece.compiler.grammars.sample2.tokens;


public class SuperIdToken extends SampleToken {

	public static interface SuperIdTokenVisitor extends TokenVisitorInterface {
		public SampleGrammarSymbol superIdCase(SuperIdToken llamador, SampleGrammarSymbol param);
	}
	
	public static abstract class SuperIdChainVisitor implements SuperIdTokenVisitor {
		private TokenVisitorInterface siguiente;
		protected SuperIdChainVisitor(TokenVisitorInterface siguienteVisitor) {
			siguiente = siguienteVisitor;
		}
		
		public SampleGrammarSymbol defaultCase(SampleToken llamador, SampleGrammarSymbol param) throws Exception {
			return llamador.execute(siguiente, param);
		}
	}
	
	public SuperIdToken(String string) {
		setLexema(string);
	}

	@Override
	public SampleGrammarSymbol execute(TokenVisitorInterface visitor, SampleGrammarSymbol param) throws Exception {
		System.out.println("Entrando al visitor de id con " + visitor.getClass());
		return (visitor instanceof SuperIdTokenVisitor)? ((SuperIdTokenVisitor) visitor).superIdCase(this, param):
			visitor.defaultCase(this, param);
		
	}

	@Override
	public String getRepresentation() {
		return "" + getLexema();
	}

}
